package cn.iocoder.yudao.module.wine.service.stockinfoitem;

import java.util.*;
import javax.validation.*;

import cn.iocoder.yudao.module.wine.controller.admin.stockinfoitem.vo.StockInfoitemPageReqVO;
import cn.iocoder.yudao.module.wine.controller.admin.stockinfoitem.vo.StockInfoitemSaveReqVO;
import cn.iocoder.yudao.module.wine.controller.app.stockinfoitem.vo.*;
import cn.iocoder.yudao.module.wine.dal.dataobject.stockinfoitem.StockInfoitemDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 出入库信息项 Service 接口
 *
 * @author 管理员
 */
public interface StockInfoitemService {

    /**
     * 创建出入库信息项
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createStockInfoitem(@Valid StockInfoitemSaveReqVO createReqVO);


    /**
     * app创建出入库信息项
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long appCreateStockInfoitem(@Valid AppStockInfoitemSaveReqVO createReqVO);

    /**
     * 更新出入库信息项
     *
     * @param updateReqVO 更新信息
     */
    void updateStockInfoitem(@Valid StockInfoitemSaveReqVO updateReqVO);

    /**
     * app更新出入库信息项
     *
     * @param updateReqVO 更新信息
     */
    void appUpdateStockInfoitem(@Valid AppStockInfoitemSaveReqVO updateReqVO);


    /**
     * 删除出入库信息项
     *
     * @param id 编号
     */
    void deleteStockInfoitem(Long id);

    /**
     * app删除出入库信息项
     *
     * @param id 编号
     */
    void appDeleteStockInfoitem(Long id);

    /**
     * 获得出入库信息项
     *
     * @param id 编号
     * @return 出入库信息项
     */
    StockInfoitemDO getStockInfoitem(Long id);

    /**
     * 获得出入库信息项分页
     *
     * @param pageReqVO 分页查询
     * @return 出入库信息项分页
     */
    PageResult<StockInfoitemDO> getStockInfoitemPage(StockInfoitemPageReqVO pageReqVO);

    /**
     * 根据出入库信息id获取出入库项信息
     * @param reqVO
     * @return
     */
    List<StockInfoitemDO> getStockInfoitemList(AppStockInfoitemPageReqVO reqVO);
}
